package com.rui.study.algorithm.T_清理eclipse垃圾文件;

import lombok.extern.slf4j.Slf4j;

import java.io.File;


/**
 * 删除eclipse工程产生的垃圾文件
 */
@Slf4j
public class Cleaner {
    public static void main(String[] args) {
        String path = "D:\\0_landray\\project\\km";
        File file = new File(path);
        if (file.exists()) {
            File[] subFiles = file.listFiles(pathname -> {
                if (pathname.getName().startsWith(".")) {
                    return false;
                }
                return true;
            });

            for (File subfile : subFiles) {
                recursiveDel(subfile);
            }
        }
    }


    private static void recursiveDel(File file) {
        if (file.getName().equals(".settings") ||
                file.getName().equals(".classpath") ||
                file.getName().equals("target") ||
                file.getName().equals("bin") ||
                file.getName().equals(".project")) {
            // 删除文件或目录
            delete(file);
        }

        else if (file.isDirectory()){
            File[] subFiles = file.listFiles(pathname -> {
                if (pathname.getName().equals("src")) {
                    return false;
                }
                return true;
            });

            for (File subfile : subFiles) {
                recursiveDel(subfile);
            }
        }
    }

    private static void delete(File file) {
        if (file.isFile()) {
            if (file.delete()) {
                log.info("Succeed to delete [{}]", file.getName());
            }
        } else {

            // 先删除 子文件或子目录
            for (File subfile : file.listFiles()) {
                delete(subfile);
            }

            // 删除该目录
            if (file.delete()) {
                log.info("Succeed to delete [{}]", file.getName());
            }
        }
    }
}
